// pages/userCenter/userCenter.js
const app = getApp();
const chinaCnLocation = require('../../utils/chinaCNLocation');
const WXBizDataCrypt = require('../../utils/cryptojs-master/RdWXBizDataCrypt.js');
Page({
	data: {
		nickName: '',
		avatarUrl: '',
		unionid:'',
		qn_count: 0 //问卷次数
	},
	onLoad: function (options) {
		this.setData({unionid:wx.getStorageSync('unionid')})
	},
	onShow() {
		// 如果本页变量中没有缓存呢称和头像，则加载用户信息
		if(!this.data.nickName && !this.data.avatarUrl ) this.__LOAD_USERINFO_();
	},
	//////////////////////////////////////////////////其它事件//////////////////////////////////////////////
	//////////////////////////////////////////////////其它事件//////////////////////////////////////////////
	//////////////////////////////////////////////////其它事件//////////////////////////////////////////////
	// 授权回调
	__getUserInfo: function (authorizeRes) {
		// console.log(chinaCnLocation('Fujiancccc') || '没有')
		// console.log(chinaCnLocation(authorizeRes.detail.userInfo.city))
		//授权验证
		if (authorizeRes.detail.userInfo == null) {
			wx.showToast({ title: '你拒绝了。。。',icon:'none' })
			return;
		} else {
			// 如果缓存中没有unionid，（假设压根wx.login() 没有得到，或用户者换手机，清缓存）
			// 就自己解密出unionid, 并强制更新用户信息到数据库
			console.log("授权成功：返回用户个人微信信息：", authorizeRes.detail);
			if (!wx.getStorageSync("unionid")) {
				wx.showLoading({title:'授权更新用户信息'})
				wx.login({
					success: res => {
						wx.request({
							url: app.globalData.server_Url + 'wx_getUnionid.php',
							data: { jscode: res.code, },
							header: { 'content-type': 'application/x-www-form-urlencoded' },
							method: 'POST',
							success: res =>  {
								// console.log(res.data.session_key)
								var __DECRYPT = new WXBizDataCrypt(app.globalData.appid, res.data.session_key)
								wx.getUserInfo({
									success: resUser =>  {
										var data = __DECRYPT.decryptData(resUser.encryptedData, resUser.iv)
										console.log('解密后 unionid: ', data.unionId)
										wx.setStorageSync('unionid', data.unionId) //放到storage中
										this.setData({
											unionid:data.unionId
										})
										this._UPDATE_UERINFO_(authorizeRes) //更新用户信息
									},
									fail: function(res) { console.log(res) }
								})
							},
							fail: function(res) {},
							complete: function(res) {}
						});
					}
				})
			} else {
				// 如果storage中有unionid,就只更新用户信息
				this._UPDATE_UERINFO_(authorizeRes)
			}
		}
	},
	// 更新用户信息
	_UPDATE_UERINFO_(authorizeRes) { 
		wx.request({
			url: app.globalData.server_request_baseUrl + '/user_updateInfo.php',
			header: { 'content-type': 'application/x-www-form-urlencoded' },
			method: 'POST',
			data: {
				openid   : wx.getStorageSync('openid'),
				unionid  : wx.getStorageSync('unionid'),
				nickName : authorizeRes.detail.userInfo.nickName,
				avatarUrl: authorizeRes.detail.userInfo.avatarUrl,
				gender   : authorizeRes.detail.userInfo.gender,
				country  : authorizeRes.detail.userInfo.country,
				province : chinaCnLocation(authorizeRes.detail.userInfo.province),
				city     : chinaCnLocation(authorizeRes.detail.userInfo.city)
			},
			success: res => {
				wx.hideLoading()
				wx.showToast({ title: '更新信息成功！' })
				this.__LOAD_USERINFO_();//重新加载用户信息
			},
			fail: res => {},
		})
	},
	// 加载读取用户信息
	__LOAD_USERINFO_(cb) { 
		wx.showLoading('加载个人信息...')
		wx.request({
			url: `${app.globalData.server_request_baseUrl}/user_getUserInfo.php`,
			data: {
				openid : wx.getStorageSync('openid'),
				unionid: wx.getStorageSync('unionid')
			},
			header: { 'content-type': 'application/json' },
			method: 'GET',
			dataType: 'json',
			responseType: 'text',
			success: (res) => {
				console.log(res.data)
				typeof cb == 'function' && cb.call(null)
				// 如果数据库有用户信息，才放置到本页，并放到全局变量
				// 这里只判断微信呢称
				let _uinfo       = res.data.userInfo  //取得整个用户信息对象
				    app.userInfo = res.data.userInfo  //整个用户信息对象，放到app变量中
				this.setData({ qn_count: _uinfo.qn_count }) // 先显示问卷数
				// 是否有返回用户名
				if (_uinfo.nickName) {
					console.log('从服务器中加载到了个人信息(呢称)')
					app.globalData.userInfo = _uinfo;
					this.setData({
						nickName : _uinfo.nickName,
						avatarUrl: _uinfo.avatarUrl,
						qn_count: _uinfo.qn_count
					})
				} else {
					console.log('数据库里面还没有保存用户个人信息（呢称）')
				}
			},
			fail: () => { },
			complete: () => {wx.hideLoading()}
		});
	},
	onPullDownRefresh() {
		this.__LOAD_USERINFO_(() => {wx.stopPullDownRefresh()})
	},
	// 分享
	onShareAppMessage: function (res) {
		return {
			title: '分享法管小程序',
			path: '/pages/intro/intro',
			imageUrl: `${app.globalData.server_Url}/weapp_res/share.png`,  //用户分享出去的自定义图片大小为5:4,
			success: function (res) {
				// 转发成功
				wx.showToast({
					title: "分享成功",
					icon: 'success',
					duration: 2000
				})
			},
			fail: function (res) { },
		}
		
	},
})